home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1992 June: ROMin Holiday / ADC Developer CD (1992-06) (''ROMin Holiday'')_iso / Developer Connection - 06-1992.iso / Developer Essentials / DTS Sample Code / DTS Japan-Sample Code / AppleEvent•MacApp3.0b1•7.0 / UTaro.h < prev    next >
Encoding:
Text File  |  1992-02-05  |  16.8 KB  |  503 lines  |  [TEXT/MPS ]

  1. // Copyright © 1991 Apple Computer, Inc. All rights reserved.
  2.  
  3. #ifndef    __UTARO__
  4. #define    __UTARO__
  5.  
  6. #ifndef    __UCORE__
  7. #include "UCore.h"
  8. #endif
  9.  
  10. #ifndef    __UPRINTING__
  11. #include <UPrinting.h>
  12. #endif
  13.  
  14. #ifndef    __UGridView__
  15. #include <UGridView.h>
  16. #endif
  17.  
  18. #ifndef    __UDRAWINGENVIRONMENT__
  19. #include <UDrawingEnvironment.h>
  20. #endif
  21.  
  22. #ifndef    __ALIASES__
  23. #include <Aliases.h>
  24. #endif
  25.  
  26. typedef enum Player
  27. {
  28.     kServerAEPlayer = 0,
  29.     kMousePlayer,
  30.     kRemoteAEPlayer,
  31.     kLocalAEPlayer
  32. } Player;
  33.  
  34. typedef enum
  35. {
  36.     kNotFixed,
  37.     kBlackFixed,
  38.     kWhiteFixed
  39. } PlayerFixed;
  40.  
  41. typedef enum
  42. {
  43.     kForeground,
  44.     kBackground,
  45.     kTopLeftCorner,
  46.     kTopLeftLine,
  47.     kBottomRightLine,
  48.     kBottomRightCorner,
  49.     kDrawPartEnd
  50. } DrawPart;
  51.  
  52. typedef enum
  53. {
  54.     kDive = 1000,
  55.     kBang,
  56.     kPshoo,
  57.     kWarn,
  58.     kFly
  59. } SoundEffect;
  60.  
  61. class    TServerDocument;
  62. class    TPreferenceDocument;
  63. class    TShadowView;
  64. class    TTaroEraser;
  65.  
  66. // ============================== AppleEvent Handler=================================
  67. pascal OSErr    ReceiveReply(AppleEvent & theAppleEvent, AppleEvent & reply, long handlerRefcon);
  68.  
  69. class TColorDrawingEnvironment;
  70. // ==========================================================================================
  71. class TTaroApplication: public TCoreApplication {
  72. private:
  73.     char    fClientHCellSize;
  74.     char    fClientVCellSize;
  75.     char    fClientBlackPlayer;
  76.     char    fClientWhitePlayer;
  77.  
  78.     char    fServerPlayer;
  79.     
  80.     Handle    fBlackCursor;
  81.     Handle    fWhiteCursor;
  82.     Handle    fNotAvailableCursor;
  83.  
  84.     StringHandle    fGameDrawMessage;
  85.     
  86.     TPreferenceDocument * fPreferenceDocument;
  87.  
  88.     TColorDrawingEnvironment    *    fBlackDrawingEnvironment;
  89.     TColorDrawingEnvironment    *    fWhiteDrawingEnvironment;
  90.     TColorDrawingEnvironment    *    fEmptyDrawingEnvironment;
  91.  
  92.     TTaroEraser    *    fTaroEraser;
  93.     
  94.     Handle    fDiveSound;
  95.     Handle    fBangSound;
  96.     Handle    fPshooSound;
  97.     Handle    fWarnSound;
  98.     
  99.     Boolean    fSoundEnable;
  100. public:
  101.     virtual pascal void ITaroApplication(void);
  102.     virtual pascal void OpenNew(CommandNumber itsCommandNumber);
  103.     virtual pascal TFile* DoMakeFile(CommandNumber itsCommandNumber);
  104.     virtual pascal TColorDrawingEnvironment * GetDrawingEnvironment(CellState aColor);
  105.     virtual pascal void GetFileTypeList(CommandNumber itsCommandNumber, TypeListHandle& typeList);
  106.     virtual pascal CommandNumber KindOfDocument(CommandNumber itsCommandNumber, TFile* aFile);
  107.     virtual pascal Boolean NewDocumentDialog(char & aHSize, char & aVSize,
  108.                         char & aBlackPlayer, char & aWhitePlayer, Str255 aClientName);
  109.     virtual pascal TDocument *DoMakeDocument(CommandNumber, TFile* itsFile);
  110.     virtual pascal void SetColorCursor(short aCursor);
  111.     virtual pascal Handle GetColorCursor(short aCursor);
  112.     virtual pascal void PutColorCursor(short aCursor, Handle theCursor);
  113.     virtual pascal StringHandle ReturnGameDrawMessage(void);
  114.     virtual pascal void DrawCell(TView * aView, Rect & aQDRect);
  115.     virtual pascal TPreferenceDocument * ReturnPreference(void);
  116.     virtual pascal void DoMenuCommand(CommandNumber aCommandNumber);
  117.     virtual pascal void DoSetupMenus(void);
  118.     virtual pascal short GetDepth(void);
  119.     virtual pascal TTaroEraser    * GetTaroEraser(void);
  120.     virtual pascal TAppleEventPlayer * CreateServerPlayer(void);
  121.     virtual pascal void DoAboutBox();
  122.     virtual pascal void PlaySound(SoundEffect aSound);
  123.     virtual pascal void ToggleSoundMenu(void);
  124. };
  125.  
  126. class TClientTarget;
  127. // ==========================================================================================
  128. class TTargetListView: public TTextListView {
  129. private:
  130.     TList    *    fTargetList;
  131. public:
  132.     virtual pascal void SetUp(TList * aTargetList);
  133.     virtual pascal void GetItemText(short anItem, Str255 & aString);
  134.     virtual pascal void SelectItem(short anItem, Boolean extendedSelection, Boolean highlight, Boolean select);
  135.     virtual pascal void SelectFirstItem(void);
  136.     virtual pascal void DeleteSelectedTarget(void);
  137.     virtual pascal TClientTarget * GetSelectedTarget(void);
  138. };
  139.  
  140. // ==========================================================================================
  141. class TColorApplication: public TTaroApplication {
  142. private:
  143.     short    fOldDepth;
  144. public:
  145.     virtual pascal void ITaroApplication(void);
  146.     virtual pascal void SetColorCursor(short aCursor);
  147.     virtual pascal void DrawCell(TView * aView, Rect & aQDRect);
  148.     virtual pascal void ChangePixelDepth(short depth);
  149.     virtual pascal short GetDepth(void);
  150. };
  151.  
  152. class    TVisibleScene;
  153. class    TPlayer;
  154. class    TTaroGridView;
  155. class    TInfoView;
  156. class    TPPCTarget;
  157. class    TPSNTarget;
  158.  
  159. // ==========================================================================================
  160. class TPreferenceDocument: public TFileBasedDocument {
  161. private:
  162.     TList        *    fRemoteTargetList;
  163.     TList        *    fLocalTargetList;
  164.     TButton    *    fRemoveButton;
  165. public:
  166.     virtual pascal void IPreferenceDocument(TFile * aFile);
  167.     virtual pascal void DoRead(TFile* aFile, Boolean forPrinting);
  168.     virtual pascal void PlayerRemoveDialog(Player ID);
  169.     virtual pascal void SetButtonState(Boolean RemoveButton);
  170.     virtual pascal void AddRemoteTarget(void);
  171.     virtual pascal void AddLocalTarget(void);
  172.     virtual pascal short GetRemoteTargetListSize(void);
  173.     virtual pascal short GetLocalTargetListSize(void);
  174.     virtual pascal void DoMakeViews(Boolean forPrinting);
  175.     virtual pascal void Free(void);
  176.     virtual pascal void ProcessDied(OSErr anError, ProcessSerialNumber & theProcess);
  177.     virtual pascal short AppendPlayerMenu(MenuHandle theMenu);
  178.     virtual pascal TClientTarget * ReturnIndexedTarget(short index);
  179.     virtual pascal void DoInitialState(void);
  180. };
  181.         
  182.  
  183. // ==========================================================================================
  184. class TPreferenceFile: public TFile {
  185. private:
  186. public:
  187.     virtual pascal void IPreferenceFile(void);
  188. };
  189.         
  190.  
  191. // ==========================================================================================
  192. class TVisibleDocument: public TCoreDocument {
  193. private:
  194.     TTaroGridView        *    fTaroView;
  195.     TInfoView        *    fInfoView;
  196.     TVisibleScene    *    fVisibleScene;
  197.     TList                *    fMoveList;
  198. public:
  199.     virtual pascal void IVisibleDocument(char aHCellSize, char aVCellSize, 
  200.                                             char aBlackPlayer, char aWhitePlayer);
  201.     virtual pascal void DoMakeViews(Boolean forPrinting);
  202.     virtual pascal void Free(void);
  203.     virtual pascal TInfoView * ReturnInfoView(void);
  204.     virtual pascal TVisibleScene * ReturnVisibleScene(void);
  205.     virtual pascal void ShowStatusMessage(Str255 & aMessage);
  206.     virtual pascal void Save(CommandNumber itsCommandNumber, Boolean askForFileName, Boolean makingCopy);
  207.     virtual pascal TPlayer * CreatePlayer(char PlayerType, CellState aColor);
  208.     virtual pascal void GetPlayerName(GameState aColor, Str255 & aString);
  209.     virtual pascal void MouseMove(TRecordCell * aMouseMove);
  210.     virtual pascal void GameOver(void);
  211.     virtual pascal void GameClose(void);
  212.     virtual pascal void PlayerMove(TRecordCell * aMouseMove);
  213.     virtual pascal void SendTurn(void);
  214. };
  215.         
  216.  
  217. // ==========================================================================================
  218. class TServerDocument: public TVisibleDocument {
  219. private:
  220.     TAppleEventPlayer    *    fServerPlayer;
  221. public:
  222.     virtual pascal void IServerDocument(char aHCellSize, char aVCellSize, char aPlayer,  
  223.                                             CellState aColor, TAppleEventPlayer * aServerPlayer);
  224.     virtual pascal TPlayer * CreatePlayer(char PlayerType, CellState aColor);
  225. };
  226.         
  227.  
  228. // ==========================================================================================
  229. class TVisibleScene: public TScene {
  230. private:
  231.     TTaroGridView    * fTaroView;
  232. public:
  233.     virtual pascal TTaroGridView * ReturnTaroGridView(void);
  234.     virtual pascal TCell * CreateCell(char aColumn, char aRow);
  235.     virtual pascal void IVisibleScene(TTaroGridView * aTaroView,
  236.                                     TVisibleDocument * aTaroDocument);
  237.     virtual pascal void ChangeCount(CellState aColor, short aNumber);
  238.     virtual pascal void SetInitialState(void);
  239. };
  240.         
  241.         
  242. // ==========================================================================================
  243. class TShadowView: public TView {
  244. private:
  245.     CellState    fColor;
  246. public:
  247.     virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
  248.     virtual pascal void SetColor(CellState    aColor);
  249.     virtual pascal void Draw(const VRect& area);
  250. };
  251.  
  252.         
  253. // ==========================================================================================
  254. class TVisibleGridView: public TGridView {
  255. private:
  256. public:
  257.     virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
  258.     virtual pascal void Draw(const VRect& area);
  259.     virtual pascal void DrawCell(GridCell aCell, const VRect& aRect);    
  260.     virtual pascal CellState GetCellState(GridCell aCell);
  261. };
  262.  
  263.         
  264. const    char    kNumOfRow        =    8;
  265. const    char    kNumOfColumn    =    32;
  266.  
  267. typedef    struct
  268. {
  269.     unsigned long    bitMapData[8];
  270. } TaroBitMap, **TaroBitMapHandle;
  271.  
  272. // ==========================================================================================
  273. class TAboutGridView: public TVisibleGridView {
  274. private:
  275.     CellState    fAboutCell[kNumOfColumn][kNumOfRow];
  276.     TaroBitMapHandle    fTaroBitMapHandle;
  277. public:
  278.     virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
  279.     virtual pascal CellState GetCellState(GridCell aCell);
  280.     virtual pascal void SetCellState(GridCell aCell, CellState aState);
  281.     virtual pascal void DoMouseCommand(VPoint& theMouse, TToolboxEvent* event, Point hysteresis);
  282.     virtual pascal Boolean GetBitMapData(GridCell aCell);
  283.     virtual pascal void Free(void);
  284. };
  285.  
  286.         
  287. class TVisibleCell;
  288. // ==========================================================================================
  289. class TTaroGridView: public TVisibleGridView {
  290. private:
  291.     TVisibleScene    *fVisibleScene;
  292. public:
  293.     virtual pascal void SetVisibleScene(TVisibleScene * aVisibleScene, short hCellSize, short vCellSize);
  294.     virtual pascal void DoSetCursor(const VPoint& localPoint, RgnHandle cursorRegion);
  295.     virtual pascal void SetCursor(TVisibleCell * aVisibleCell);
  296.     virtual pascal void DoMouseCommand(VPoint& theMouse, TToolboxEvent* event, Point hysteresis);
  297.     virtual pascal void SetEraseColor(TVisibleCell * aCell);
  298.     virtual pascal void ForceRedrawCell(TVisibleCell * aCell);
  299.     virtual pascal CellState GetCellState(GridCell aCell);
  300. };
  301.  
  302.         
  303. class TNumberStringView;
  304. class TStringView;
  305. class TTaroStaticText;
  306. // ==========================================================================================
  307. class TInfoView: public TShadowView {
  308. private:
  309.     TNumberStringView    *fBlackNumber;
  310.     TNumberStringView    *fWhiteNumber;
  311.     TTaroStaticText    *fStaticText;
  312.     TStringView    *fBlackText;
  313.     TStringView    *fWhiteText;
  314. public:
  315.     virtual pascal void     IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
  316.     virtual pascal void    SetNumber(CellState aColor, short aNumber);
  317.     virtual pascal void    SetPlayer(CellState aColor, Str255 aPlayerStr);
  318.     virtual pascal void    SetView(TNumberStringView * aBlackNumber, TNumberStringView * aWhiteNumber,
  319.         TTaroStaticText * aStaticText, TStringView * aBlackText, TStringView * aWhiteText);
  320.     virtual pascal void ShowStatusMessage(Str255 & aMessage);
  321. };
  322.  
  323.         
  324. // ==========================================================================================
  325. class TPlayerPopup: public TPopup {
  326. private:
  327. public:
  328.     virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
  329.     virtual pascal void SetClientName(Str255 aClientName);
  330. };
  331.  
  332.         
  333. // ==========================================================================================
  334. class TTaroStaticText: public TStaticText {
  335. private:
  336. public:
  337.     virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
  338.     virtual pascal void SetColor(CellState    aColor);
  339.     virtual pascal void Draw(const VRect& area);
  340.     virtual pascal void SetText(const Str255 & aString, Boolean redraw);
  341. };
  342.  
  343.         
  344. // ==========================================================================================
  345. class TTaroWindow: public TWindow {
  346. private:
  347. public:
  348.     virtual pascal void Update(void);
  349. };
  350.  
  351.         
  352. // ==========================================================================================
  353. class TStringView: public TView {
  354. private:
  355.     Str255    fString;
  356. public:
  357.     virtual pascal void IRes(TDocument* itsDocument, TView* itsSuperView, TStream* itsParams);
  358.     virtual pascal void Draw(const VRect& area);
  359.     virtual pascal void SetColor(CellState    aColor);
  360.     virtual pascal void SetText(Str255 & aString, Boolean redraw);
  361. };
  362.  
  363.         
  364. // ==========================================================================================
  365. class TNumberStringView: public TStringView {
  366. private:
  367. public:
  368.     virtual pascal void SetValue(long value, Boolean redraw);
  369. };
  370.  
  371.         
  372. // ==========================================================================================
  373. class TVisibleCell: public TCell {
  374. private:
  375. public:
  376.     virtual pascal void ChangeState(void);
  377.     virtual pascal void PutPiece(void);
  378. };
  379.  
  380.  
  381. // ==========================================================================================
  382. class TMousePlayer: public TPlayer {
  383. private:
  384. public:
  385.     virtual pascal void IMousePlayer(TCoreDocument * aCoreDocument);
  386.     virtual pascal void MyTurn(void);
  387.     virtual pascal void MouseMove(TRecordCell * aMouseMove);
  388.     virtual pascal void GameOver(GameResult aResult);
  389.     virtual pascal void GetName(Str255 & aString);
  390. };
  391.  
  392. // ==========================================================================================
  393. class TVisibleAEPlayer: public TAppleEventPlayer {
  394. private:
  395. public:
  396.     virtual pascal void ShowPlayerMessage(short statusID);
  397.     virtual pascal void GameOver(GameResult aResult);
  398.     virtual pascal void MyTurn(void);
  399.     virtual pascal void GetName(Str255 & aString);
  400.     virtual pascal void MyMove(TRecordCell * aMove);
  401. };
  402.  
  403. // ==========================================================================================
  404. class TServerAEPlayer: public TVisibleAEPlayer {
  405. private:
  406. public:
  407.     virtual pascal void IServerAEPlayer(TCoreDocument * aCoreDocument, CellState aColor);
  408.     virtual pascal void Free(void);
  409. };
  410.  
  411. // ==========================================================================================
  412. class TClientAEPlayer: public TVisibleAEPlayer {
  413. private:
  414. public:
  415.     virtual pascal void IClientAEPlayer(TCoreDocument * aCoreDocument,
  416.                                         CellState    aColor, TClientTarget * aClientTarget);
  417.     virtual pascal void TargetReply(unsigned long aTargetTransactionID);    
  418.     virtual pascal void TargetDied(void);    
  419.     virtual pascal void SetTargetTableSpecifier(AEDesc & TableSpec);
  420. };
  421.  
  422. // ==========================================================================================
  423. class TClientTarget: public TTarget {
  424. private:
  425.     TList    *    fUserList;
  426. public:
  427.     virtual pascal void IClientTarget(void);
  428.     virtual pascal void Free(void);
  429.     virtual pascal void Remove(void);
  430.     virtual pascal void SendNewElement(char HCellSize, char VCellSize, CellState aColor,
  431.                                                 TVisibleAEPlayer * theClient, unsigned long aTransactionID);
  432.     virtual pascal void SendBeginTransaction(long & aTransactionID);    
  433.     virtual pascal void SendEndTransaction(GameResult aResult, unsigned long theServer, TPlayer * theClient);
  434.     virtual pascal void GetName(Str255 & aString);
  435.     virtual pascal void AddUser(TClientAEPlayer * theClient);
  436.     virtual pascal void SendQuitApplication(void);
  437.     virtual pascal short GetUserCount(void);
  438.     virtual pascal void TellUsersThatProcessDied(void);
  439. };
  440.  
  441. // ==========================================================================================
  442. class TPPCTarget: public TClientTarget {
  443. private:
  444.     TargetIDHdl        fTargetID;
  445. public:
  446.     virtual pascal void IPPCTarget(TargetIDHdl aTargetID);
  447.     virtual pascal void GetName(Str255 & aString);
  448.     virtual pascal void Remove(void);
  449.     virtual pascal void Free(void);
  450. };
  451.  
  452. // ==========================================================================================
  453. class TPSNTarget: public TClientTarget {
  454. private:
  455.     ProcessSerialNumber    fProcess;
  456.     AliasHandle            fFile;
  457. public:
  458.     virtual pascal void IPSNTarget(AliasHandle aFile);
  459.     virtual pascal Boolean TestProcess(void);
  460.     virtual pascal void LaunchProcess(void);
  461.     virtual pascal void SendBeginTransaction(long & aTransactionID);
  462.     virtual pascal void SendEndTransaction(GameResult aResult, unsigned long theServer, TPlayer * theClient);
  463.     virtual pascal void GetName(Str255 & aString);
  464.     virtual pascal void Remove(void);
  465.     virtual pascal void Free(void);
  466.     virtual pascal void CompareProcess(ProcessSerialNumber & theProcess);
  467.     virtual pascal void GetFSSpec(FSSpec & aFile);
  468. };
  469.  
  470. // ==========================================================================================
  471. class TColorDrawingEnvironment: public TDrawingEnvironment {
  472. private:
  473.     CTabHandle    fColorTableHandle;
  474.     PixPatHandle    fPixPatTable[kDrawPartEnd];
  475.     short    fID;
  476. public:
  477.     virtual pascal void Initialize(void);
  478.     virtual pascal void Free(void);
  479.     virtual pascal void IColorDrawingEnvironment(short aColorTableID);
  480.     virtual pascal void SetupAdornerColor(DrawPart aPart);
  481.     virtual pascal void Setup(void);
  482.     virtual pascal void MakePixPatTable(void);
  483. };
  484.  
  485. // ==========================================================================================
  486. class TTaroEraser: public TEraseAdorner {
  487. private:
  488.     CTabHandle    fColorTableHandle;
  489. public:
  490.     virtual pascal void Draw(TView * itsView, const VRect& area);
  491. };
  492.  
  493. // ==========================================================================================
  494. class TSoundCommand: public TCommand {
  495. private:
  496.     SoundEffect    fSound;
  497. public:
  498.     virtual pascal void ISoundCommand(SoundEffect aSound);
  499.     virtual pascal void DoIt(void);
  500. };
  501.  
  502. #endif
  503.